package org.jaaksi.kottlindemo.test

import android.view.View
import android.view.View.OnClickListener
import android.widget.Button
import androidx.core.view.isVisible

/**
 * Lambda表达一般使用“{ }”包围。
 * 它的参数（如果有的话）在“->”前定义，参数类型可能是省略的。
 * 函数体跟在“->”后面。
 */
class TestLambda {
  var button: Button? = null

  fun test1() {
    button?.setOnClickListener(object : OnClickListener {
      override fun onClick(v: View?) {
      }
    })

    // 1.转化为lambda表达式
    button?.setOnClickListener({ v: View? -> })
    // 2.参数类型可以省略
    button?.setOnClickListener({ v -> })
    // 3.如果参数为函数并且是最后一个参数，可以将参数移到括号外面
    button?.setOnClickListener() { v -> }
    // 4.移动到括号外面之后如果括号内没有参数，括号可以省略不写
    button?.setOnClickListener { v -> }
    // 5.函数参数对应的函数只有一个参数，在使用时，可以省略参数定义，直接使用“it”代替参数
    button?.setOnClickListener { it.id }
      button?.isVisible = true
  }
}